package com.zhouhong.muke_leetcode;

/**
 * @ClassName: Algorithm-and-Data-Structure
 * @Description:
 * @Author: zhouhong
 * @Create: 2021-04-02 12:07
 **/
//假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
// 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢？
public class LeetCode0070 {
    // 没思路的时候：基本情况
    /**
     * n = 1 -----  1
     * n = 2 -----  2
     * n = 3 -----  f(1) + f(2)
    */

    // 开辟三个变量依次向后计算
    /**
     * 12:18	info
     * 			解答成功:
     * 			执行耗时:0 ms,击败了100.00% 的Java用户
     * 			内存消耗:35.5 MB,击败了8.07% 的Java用户
    */
    public int climbStairs(int n) {
        if (n <= 2){
            return n;
        }
        int f1 = 1, f2 = 2, f3 = 3;
        for (int i = 3; i <= n; i++) {
            f3 = f1 + f2;
            f1 = f2;
            f2 = f3;
        }
        return f3;
    }

}
